#ifndef __SCENE__
#define __SCENE__

#include "GeometricObjects.h"
#include "Objects.h"
#include <vector>
#include "Light.h"
#include "Ambient.h"
#include "Material.h"
#include "SceneHelper.h"


/*
	====================================================
			A scene is a collection of objects
	====================================================
*/

namespace Engine
{
	
	class Scene
	{
	public:
		
		vector<GeometricObjects*>  m_sceneObjects;
		vector<Light*> m_sceneLight;
		Light * m_ambientLight;

		vector<GeometricObjects*> GetObjects()
		{
			return m_sceneObjects;
		}

		vector<GeometricObjects*> AddObject(GeometricObjects* p_object)
		{
			m_sceneObjects.push_back(p_object);
		}

		vector<Light*> GetLight()
		{

			return m_sceneLight;
		}

		bool IsAmbientLight()
		{
			return m_ambientLight == NULL ? false : true;
		}

		void AddLight(Light* p_currentLight)
		{
			m_sceneLight.push_back(p_currentLight);
		}

		virtual void BuildScene() = 0;

	private:
		
	};
}

#endif // !__SCENE__